/**
 * 
 */
package com.hson.demo.base.util;

import java.util.UUID;

/**
 * 数据表业务主键的产生规则定义，如用户表需要用户主键 A000000001，角色表需要角色主键P00001
 * 
 * @author Hungel.zou
 * @time 2015年7月20日 下午7:03:30
 */
public class PrimaryKeyUtil {

	private static final int USER = 12; // 用户业务主键长度
	private static final int ROLE = 9; // 用户业务主键长度

	private static String createKey(String startChar, Long t, int totalLengh) {
		if (t == null) {
			return null;
		}
		String s = startChar;
		String tStr = String.valueOf(t + 1);
		int l = totalLengh - s.length() - tStr.length();
		for (int i = 0; i < l; i++) {
			s = s.concat("0");
		}
		return s.concat(tStr);
	}

	/**
	 * 会员业务主键
	 * 
	 * @param t
	 *            : 当前会员数总数
	 * @return
	 */
	public static String createUserNoKey(Long t) {
		return createKey("A", t, USER);
	}
	
	/**
	 * 会员业务主键
	 * 
	 * @param t
	 *            : 当前会员数总数
	 * @return
	 */
	public static String createUserNoKey(int t) {
		return createKey("A", new Long(t), USER);
	}

	/**
	 * 角色业务主键
	 * 
	 * @param t
	 * @return
	 */
	public static String createRoleNoKey(Long t) {
		return createKey("P", t, ROLE);
	}
	
	/**
	 * 主键生成器，基于时间戳+机器地址的
	 *
	 * @return 主键
	 */
	public static String getUUID() {
		UUID uuid = UUID.randomUUID();
		return uuid.toString().replaceAll("-", "").toLowerCase();
	}

	public static void main(String[] args) {
		System.out.println(createUserNoKey(1235l));
		System.out.println(createRoleNoKey(2l));
		
		System.out.println(getUUID());
	}
}
